// pages/edit/index.js
const db = wx.cloud.database()//初始化云数据库
const _ = db.command//初始化数据库指令
//const cloudPath = `cloudbase/${Date.now()}-${Math.floor(Math.random(0, 1) * 1000)}` + filePath.match(/\.[^.]+?$/)
Page({

  /**
   * 页面的初始数据
   */
  data: {
    multiArray: [['时令水果', '肉蛋水产','粮油调味','花卉绿植','火锅来了','蔬菜豆品'], ['柑橘橙柚柠','葡提浆果','苹果香蕉梨','桃子李杏枣','西瓜蜜瓜']],
    multiIndex: [0, 0],
    files:[],//轮播图:存放格式为[{},{},{}],存放新增的图片的临时地址和name，这里的图片通过wx.cloud.uploadFile上传至存储中，然后获取File ID
    files2:[],//存放格式为[{},{},{}],存放新增的图片的临时地址和name，这里的图片通过wx.cloud.uploadFile上传至存储中，然后获取File ID
    business:{},
    detalis:[],
    pics:[],
    price:"",
    title:"",
    index:0
  },
  gooodsItem:{},
  jiuPics:[],
  jiuDetalis:[],
  gooods:{},
  addGoods:Boolean,
  ALLcategory:[{
    cat_name:'时令水果',
    children:['柑橘橙柚柠','葡提浆果','苹果香蕉梨','桃子李杏枣','西瓜蜜瓜']
  },{
    cat_name:'肉蛋水产',
    children:['鸡蛋蛋类','猪肉','虾蟹','牛羊肉','鱼','鸡鸭禽']
  },{
    cat_name:'粮油调味',
    children:['大米杂粮','调味品','食用油','罐头酱菜','面粉面条']
  },{
    cat_name:'花卉绿植',
    children:['花卉','绿植']
  },{
    cat_name:'火锅来了',
    children:['火锅必备','丸滑海鲜','火锅底料','大口吃肉','蔬菜豆制品']
  },{
    cat_name:'蔬菜豆品',
    children:['跟茎类','茄瓜类','叶菜类','菌菇类','豆腐豆制品','葱姜蒜椒']
  }],
  

  bindMultiPickerChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      multiIndex: e.detail.value
    })
  },
  bindMultiPickerColumnChange: function (e) {//属性分类选择功能
    console.log(e);
    console.log('修改的列为', e.detail.column, '，值为', e.detail.value);
    var data={
      multiArray: this.data.multiArray,
      multiIndex: this.data.multiIndex
    }
    data.multiIndex[e.detail.column]=e.detail.value
    switch (data.multiIndex[0]){
      case 0:
        data.multiArray[1]=['柑橘橙柚柠','葡提浆果','苹果香蕉梨','桃子李杏枣','西瓜蜜瓜']
        break;
      case 1:
        data.multiArray[1]=['鸡蛋蛋类','猪肉','虾蟹','牛羊肉','鱼','鸡鸭禽']
        break
      case 2:
        data.multiArray[1]=['大米杂粮','调味品','食用油','罐头酱菜','面粉面条']
        break
      case 3:
        data.multiArray[1]=['花卉','绿植']
        break
      case 4:
        data.multiArray[1]=['火锅必备','丸滑海鲜','火锅底料','大口吃肉','蔬菜豆制品']
        break
      case 5:
        data.multiArray[1]=['跟茎类','茄瓜类','叶菜类','菌菇类','豆腐豆制品','葱姜蒜椒']
        break
    }
    console.log(data.multiIndex);
    this.setData(data);
  },
  //选择轮播图文件
  // chooseMessageFile(){
  //   const files = this.data.files
  //   wx.chooseMessageFile({
  //     count: 9,
  //     success: res => {
  //       console.log('选择文件之后的res',res)
  //       let tempFilePaths = res.tempFiles
  //       for(let i=0;i<tempFilePaths.length;i++){
  //         files.push({
  //           src: tempFilePaths[i].path,
  //           name: tempFilePaths[i].name
  //         })
  //       }
  //       this.setData({ files: files })
  //       console.log('选择文件之后的files', this.data.files)
  //     }
  //   })
  // },
  childrenLBT(e){//轮播图
    console.log(e);
    this.setData({
      files:e.detail
    })
  },
  childrenXQY(e){//详情页
    console.log(e);
    this.setData({
      files2:e.detail
    })
  },
  uploadFiles(e) {//提交表单

    // this.upColud(this.data.files,this.jiuPics,true)//上传轮播图
    // this.upColud(this.data.files2,this.jiuDetalis,false)//上传详情页
    // console.log(e);
    // let{business}=wx.getStorageSync("userInfo");//商家信息
    // let {price,title}=e.detail.value
    // let categoryIndex=this.data.multiIndex//获取分类下标值
    // let categoryArray=this.data.multiArray//获取分类数组
    // let category=[categoryArray[0][categoryIndex[0]],categoryArray[1][categoryIndex[1]]]//通过数组和下标值得到当前分类
    // let detalis=this.jiuDetalis//详情页
    // let pics=this.jiuPics//轮播图
    // if(this.addGoods){//如果是新加的商品则不用修改_id
    //   this.gooodsItem={
    //     price,//价格
    //     pics,//轮播图
    //     detalis,//详情页
    //     title,//标题
    //     business:business,//发布商品的商家信息
    //     category:category,//分类
    //     multiIndex:categoryIndex//分类下标值
    //   }
    //   db.collection('examine').add({//上传至审核表
    //     data:this.gooodsItem,
    //     success:res=>{
    //       console.log(res);
    //     }
    //   })
    // }else{//修改已有的商品，_id不变
    //   this.gooodsItem.price=price//价格
    //   this.gooodsItem.pics=pics//轮播图
    //   this.gooodsItem.detalis=detalis//详情页
    //   this.gooodsItem.title=title//标题
    //   this.gooodsItem.multiIndex=categoryIndex//分类下标值
    //   this.gooodsItem.category=category//分类
    //   db.collection('examine').add({//上传至审核表
    //     data:this.gooodsItem,
    //     success:res=>{
    //       console.log(res);
    //     }
    //   })


    //   wx.cloud.callFunction({
    //     name: 'category',// 这里要和云函数的名字一致
    //     data: {
    //       gooodsItem:this.gooodsItem
    //     }
    //   }).then( res => {
    //     console.log(res)
    //   })
    // }










  wx.showLoading({
    title: '客官稍安勿躁',
    mask:true
  })
  Promise.all([//封装promise函数，利用Promise.all等待两个异步函数完成
    this.upColud(this.data.files,this.jiuPics,true)//上传轮播图至云存储
    ,this.upColud(this.data.files2,this.jiuDetalis,false)//上传详情页至云存储
  ]).then(res=>{
    let{business}=wx.getStorageSync("userInfo");//商家信息
    let {price,title}=e.detail.value
    let categoryIndex=this.data.multiIndex//获取分类下标值
    let categoryArray=this.data.multiArray//获取分类数组
    let category=[categoryArray[0][categoryIndex[0]],categoryArray[1][categoryIndex[1]]]//通过数组和下标值得到当前分类
    let detalis=this.jiuDetalis//详情页
    let pics=this.jiuPics//轮播图
    if(this.addGoods){//如果是新加的商品则不用添加_id，让系统自动生成
        this.gooodsItem={
          price,//价格
          pics,//轮播图
          detalis,//详情页
          title,//标题
          business:business,//发布商品的商家信息
          category:category,//分类
          multiIndex:categoryIndex//分类下标值
        }
        db.collection('examine').add({//上传至审核表
          data:this.gooodsItem,
          success:res=>{
            console.log(res);
          }
        })
    }else{//修改已有的商品，_id不变
        this.gooodsItem.price=price//价格
        this.gooodsItem.pics=pics//轮播图
        this.gooodsItem.detalis=detalis//详情页
        this.gooodsItem.title=title//标题
        this.gooodsItem.multiIndex=categoryIndex//分类下标值
        this.gooodsItem.category=category//分类
        db.collection('examine').add({//上传至审核表
            data:this.gooodsItem,
            success:res=>{
              console.log(res);
            }
        })
        wx.cloud.callFunction({
            name: 'category',// 这里要和云函数的名字一致
            data: {
              gooodsItem:this.gooodsItem
            }
        }).then( res => {
            console.log(res)
        })
    }
    wx.hideLoading()
    wx.showToast({
      title: '上传成功',
      icon: 'success',
    })
  })




  },




  upColud(FFF,JIU,a1){//上传至存储  
    // for(let i = 0 ;i<FFF.length;i++){
    //   console.log(i);
    //   let filePath = FFF[i].src
    //   let cloudPath = `cloudbase/${Date.now()}-${Math.floor(Math.random(0, 1) * 1000)}` + filePath.match(/\.[^.]+?$/)
    //   wx.cloud.uploadFile({
    //     cloudPath,
    //     filePath
    //   }).then(res => {
    //     console.log(res);
    //     JIU.push(res.fileID)
    //     if(a1){
    //       this.jiuPics=JIU
    //     }else{
    //       this.jiuDetalis=JIU
    //     }
    //     console.log(this.jiuDetalis);
    //   }).catch(error => {
    //     console.log("文件上传失败",error)
    //   })
    // }
    return new Promise((resolve,reject)=>{//封装成promise函数
       let b=FFF.length
       let c=0
      for(let i = 0 ;i<FFF.length;i++){
        console.log(i);
        let filePath = FFF[i].src
        let cloudPath = `cloudbase/${Date.now()}-${Math.floor(Math.random(0, 1) * 1000)}` + filePath.match(/\.[^.]+?$/)
        wx.cloud.uploadFile({
          cloudPath,
          filePath
        }).then(res => {
          console.log(res);
          JIU.push(res.fileID)
          if(a1){
            this.jiuPics=JIU
          }else{
            this.jiuDetalis=JIU
          }
          console.log(this.jiuDetalis);
          c++
          if(b==c){
            resolve()
          }
        }).catch(error => {
          console.log("文件上传失败",error)
        })
      }
    })
  },
  deletePics(e){//轮播图判断哪些图片从已有的库中删除，哪些要上传至库中。
    let {src,files}=e.detail
    let filesIndex
    if(files){
      filesIndex=files.findIndex(v=>v.src==src)//判断删除的元素是否是新增图片
    }
    //let filesIndex=files.findIndex(v=>v.src==src)//判断删除的元素是否是新增图片
    let oldIndex=this.jiuPics.findIndex(v=>v==src)//判断删除的元素是否是已在云数据中的图片
    if(filesIndex!=-1){//判断删除的是已在云数据中的图片，还是后面新增的图片。如若是第一种则要删除数据库中的图片，否则只从files数组中删除该元素即可。
      files.splice(filesIndex,1)
      this.setData({files})
    }else{
      this.jiuPics.splice(oldIndex,1)
    }
  },
  deleteDetail(e){
    let {src,files}=e.detail
    let filesIndex
    if(files){
      filesIndex=files.findIndex(v=>v.src==src)//判断删除的元素是否是新增图片
    }
    //let filesIndex=files.findIndex(v=>v.src==src)//判断删除的元素是否是新增图片
    let oldIndex=this.jiuDetalis.findIndex(v=>v==src)//判断删除的元素是否是已在云数据中的图片
    if(filesIndex!=-1){//判断删除的是已在云数据中的图片，还是后面新增的图片。如若是第一种则要删除数据库中的图片，否则只从files数组中删除该元素即可。
      files.splice(filesIndex,1)
      this.setData({
        files2:files
      })
    }else{
      this.jiuDetalis.splice(oldIndex,1)
    }
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    if(options.id){
      this.addGoods=false
      let id=options.id
      db.collection('goods').doc(id).get({
        success:res=>{
          console.log(res);
          this.gooodsItem=res.data
          this.setData({
            pics:this.gooodsItem.pics,
            detalis:this.gooodsItem.detalis,
            price:this.gooodsItem.price,
            title:this.gooodsItem.title
          })
          this.jiuPics=this.gooodsItem.pics
          this.jiuDetalis=this.gooodsItem.detalis
          this.L1(this.gooodsItem.title)
        }
      })
    }else{
      this.addGoods=true
    }
  },
  L1(title){
    db.collection('category').where({//获取该商品分类的集合
      'children.children.cat_name': title
    }).get().then(res=>{
      console.log(res);
      let multiIndex=[]
      let index2
      res.data[0].children.forEach((value,index) => {
        if(value.children.findIndex(v=>v.cat_name==title)!=-1){
          index2= index
        }
        
      });
      let index1=this.ALLcategory.findIndex(v=>v.cat_name==res.data[0].cat_name)
      multiIndex.push(index1,index2)
      return Promise.resolve(multiIndex)
    }).then(res=>{
      console.log(res);
      let data={
        multiArray: this.data.multiArray,
        multiIndex: res
      }
      switch (data.multiIndex[0]){
        case 0:
          data.multiArray[1]=['柑橘橙柚柠','葡提浆果','苹果香蕉梨','桃子李杏枣','西瓜蜜瓜']
          break;
        case 1:
          data.multiArray[1]=['鸡蛋蛋类','猪肉','虾蟹','牛羊肉','鱼','鸡鸭禽']
          break
        case 2:
          data.multiArray[1]=['大米杂粮','调味品','食用油','罐头酱菜','面粉面条']
          break
        case 3:
          data.multiArray[1]=['花卉','绿植']
          break
        case 4:
          data.multiArray[1]=['火锅必备','丸滑海鲜','火锅底料','大口吃肉','蔬菜豆制品']
          break
        case 5:
          data.multiArray[1]=['跟茎类','茄瓜类','叶菜类','菌菇类','豆腐豆制品','葱姜蒜椒']
          break
      }
      this.setData(data);
    })
    
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})